const express = require('express')
const app = express()

const secret = '123'
// 解析 POST 提交过来的表单数据
app.use(express.urlencoded({ extended: false }))

/* 加密 */
var jwt = require('jsonwebtoken');


/* 解密 */
var expressJWT = require('express-jwt');

/* 
+ 只要发送请求就会执行===解密
+ 判断哪些需要携带token的哪些不需要===只要以api开头的请求头就不需要携带token
+ 解密后会将用户信息 存在  req.user
*/
app.use(expressJWT({ secret }).unless({ path: [/^\/api\//] }));


app.post('/api/login', (req, res) => {
    if (req.body.username !== 'admin' || req.body.password !== '123456') {
        return res.send('用户信息输入不正确请重新输入')
    }

    var token=jwt.sign({ username: req.body.username }, secret,{ expiresIn: '40s' } );
    res.send({
        code:1,
        token,
        msg:'登录成功'
    })
})

app.post('/admin', (req, res) => {
    res.send('/api/admin')
})

app.use((err,req,res,next)=>{
    console.log(err.name)
    if(err.name=='UnauthorizedError'){
        res.send('token过期了')
    }

    res.send('异常错误')
   
})


app.listen(2000, () => {
    console.log('服务器:http://127.0.0.1:2000')
})